import axios from 'axios'
import { ElMessage } from 'element-plus'
// 创建axios实例
const service = axios.create({
    baseURL: '/admin-api', // api的base_url
    timeout: 5000, // 请求超时时间
    headers: {
        'Content-Type': 'application/json;charset=utf-8'
    }
})

// 请求拦截器
service.interceptors.request.use(
    config => {
        // 在发送请求之前做些什么
        // 例如：添加token
        const token = localStorage.getItem('token')
        if (token) {
            config.headers['Authorization'] = `Bearer ${token}`
        }
        return config
    },
    error => {
        // 对请求错误做些什么
        console.error('请求错误：', error)
        return Promise.reject(error)
    }
)

// 响应拦截器
service.interceptors.response.use(
    response => {
        const res = response.data
        const code = res.code
        const msg = res.msg || res.message
        // 这里可以根据后端返回的状态码做相应的处理
        if (code === 200 || code === 0) {
            return res
        } else {
            // 处理错误情况
            console.error('响应错误：', msg)
            ElMessage.error(msg)
            return Promise.reject(new Error(msg || '未知错误'))
        }
    },
    error => {
        // 处理HTTP错误状态
        console.error('响应错误：', error)
        return Promise.reject(error)
    }
)

// 封装GET请求
export function get(url: string, params: any) {
    return service.get(url, { params })
}

// 封装POST请求
export function post(url: string, data: any) {
    return service.post(url, data)
}

// 封装PUT请求
export function put(url: string, data: any) {
    return service.put(url, data)
}

// 封装DELETE请求
export function del(url: string) {
    return service.delete(url)
}

export default service